const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database()

exports.main = async (event, context) => {
  console.log('开始初始化管理数据库...')
  
  try {
    // 1. 创建管理员集合并添加默认管理员
    console.log('创建 admins 集合...')
    await db.collection('admins').add({
      data: {
        username: 'admin',
        password: '123456', // 实际使用时应该加密
        role: 'super_admin',
        status: 'active',
        createTime: new Date(),
        lastLoginTime: null,
        avatar: ''
      }
    })
    console.log('✅ admins 集合创建成功，默认管理员已添加')
    
    // 2. 创建管理员token集合（用于存储登录token）
    console.log('创建 admin_tokens 集合...')
    // 先添加一个空记录来创建集合，然后删除
    const tokenResult = await db.collection('admin_tokens').add({
      data: {
        temp: true
      }
    })
    await db.collection('admin_tokens').doc(tokenResult._id).remove()
    console.log('✅ admin_tokens 集合创建成功')
    
    // 3. 检查并确保其他必要集合存在
    const collections = ['users', 'activities', 'activity_registrations', 'votes', 'vote_records']
    
    for (const collectionName of collections) {
      try {
        // 尝试获取集合信息，如果不存在会抛出错误
        await db.collection(collectionName).limit(1).get()
        console.log(`✅ ${collectionName} 集合已存在`)
      } catch (error) {
        // 集合不存在，创建它
        console.log(`创建 ${collectionName} 集合...`)
        const tempResult = await db.collection(collectionName).add({
          data: { temp: true }
        })
        await db.collection(collectionName).doc(tempResult._id).remove()
        console.log(`✅ ${collectionName} 集合创建成功`)
      }
    }
    
    return {
      success: true,
      message: '数据库初始化完成！',
      details: {
        adminCreated: true,
        collectionsChecked: collections.length + 2
      }
    }
    
  } catch (error) {
    console.error('数据库初始化失败:', error)
    return {
      success: false,
      error: error.message,
      message: '数据库初始化失败，请检查权限设置'
    }
  }
}